package com.feemanage.domain.bo;

import com.common.validate.add;
import com.common.validate.edit;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.framework.config.BigDecimalSerializer;
import lombok.Data;

import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.HashMap;
import java.util.Map;

@Data
public class BizCwIncomeClaimBo {

    private static final long serialVersionUID = 1L;

    /** 自增ID */
    @NotNull(message = "认领ID不能为空", groups = {edit.class})
    private String id;

    /** 财务来款ID */
    @NotNull(message = "来款ID不能为空", groups = {add.class, edit.class})
    private String cwIncomeId;

    /** 项目ID */
    @NotNull(message = "项目ID不能为空", groups = {add.class, edit.class})
    private String projectId;

    /** 项目名称 */
    private String projectName;

    /** 项目类型，横纵向 */
    private String projectClass;

    /** 负责人id */
    private String chargerId;

    /** 负责人名称 */
    private String chargerName;

    /** 认领人ID */
    private String claimerId;

    /** 认领金额 */
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal claimFee;

    /** 外拨金额 */
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal outboundFee;

    /** 留校金额 */
    @JsonSerialize(using = BigDecimalSerializer.class)
    private BigDecimal schoolFee;

    /** 来款类型 */
    private String incomeType;

    /** 认领时间 默认当前日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate claimDate;

    /** 审核状态 */
    private String checkstatus;

    /** 页面上点击按钮的状态 */
    private String status;

    private String processInstanceId;

    private String taskId;

    private Boolean isAuditor;

    /** 财务对接状态 */
    private String pushStatus;

    /** 财务对冲号 */
    private String cwDch;

    /** 单位id**/
    private String unitId;

    /** 项目分类 */
    private String projectType;

    /** 留校分割方式 */
    private String budgetSplitModde;

    /** 导入-目前默认0 */
    private String batchImport;

    @JsonInclude(JsonInclude.Include.NON_EMPTY)
    private Map<String, Object> params = new HashMap<>();

}
